The present invention generally relates to data processing. The invention relates more specifically to methods and mechanisms for creating and storing information that defines one or more network devices for use with a network management system, including a method by which information about a network device may be created and represented using an abstract device definition language.
Computer networks have become ubiquitous in the home, office, and industrial environment. As computer networks have grown ever more complex, automated mechanisms for organizing and managing the networks have emerged. These mechanisms are generally implemented in the form of computer programs that are known as network management systems.
FIG. 1 is a simplified diagram of a network 100 that is managed by a network management station 10. The network 100 comprises one or more network devices 102, such as switches, routers, bridges, gateways, and other devices. Each network device 102 is coupled to a another network device 102, or to one or more end stations 120. Each end station 120 is a terminal node of the network 100 at which some type of work is carried out. For example, an end station 120 is a workstation, a printer, a server, or similar device.
Each network device 102 executes a network-oriented operating system 110. An example of a network-oriented operating system is the Internetworking Operating System (IOS) commercially available from Cisco Systems, Inc. Each network device 102 also executes one or more applications 112 under control of the operating system 102. The operating system 102 supervises operation of the applications 112 and communicates over network connections 104 using an agreed-upon network communication protocol, such as Simplified Network Management Protocol (SNMP). The applications may include an SNMP agent that can send and receive messages using SNMP.
Each device 102 stores its current configuration, and other information, in a Management Information Base (MIB) 114. Information in the MIB 114 is organized in one or more tables of one or more MIB variables. The network management station 10 can send fetch and set commands to the device 102 to retrieve or set values of MIB variables. Examples of MIB variables include SysObjID or SysOID. MIB structures and functions are described in detail in D. Perkins et al., xe2x80x9cUnderstanding SNMP MIBsxe2x80x9d (Upper Saddle River, N.J.: Prentice-Hall, 1997), and Request For Comment (RFC) 1213.
Preferably the network management station 10 is a general-purpose computer system of the type shown and described further herein in connection with FIG. 8. The network management station 10 executes one or more software elements that carry out the functions shown in block diagram form in FIG. 1. For example, the network management station 10 executes a basic input/output system (BIOS) 20 that controls and governs interaction of upper logical layers of the software components with hardware of the network management station. An example of a suitable BIOS is the Phoenix ROM BIOS. The network management station 10 also executes an operating system 30 that supervises and controls operation of upper-level application programs. An example of a suitable operating system is the Microsoft Windows NT(copyright) operating system.
The network management station 10 executes a network management system 40 that interacts with a database 60 containing information about the managed network 100. The network management system 40 is an example of a network management application. Using a network management application, a manager can monitor and control network components. For example, a network management application enables a manager to interrogate devices such as host computers, routers, switches, and bridges to determine their status, and to obtain statistics about the networks to which they attach. The network management application also enables a manager to control such devices by changing routes and configuring network interfaces. Examples network management applications are Cisco Resource Manager, and CiscoView, each of which is commercially available from Cisco Systems, Inc.
The network devices 102 of a typical network are diverse and can be classified in families of similar kinds. Each family has many versions of hardware, firmware, and software. Often, a management operation applied to certain elements of a device is the same as the operation applied to all other devices. However, there also may be differences in methods of management between families of devices. Further, a family of devices generally shares many properties and therefore management of the members of a family is generally similar. However, there may also be differences among members of a family. Differences may also exist among executable program modules within a device.
Releases of new devices and their firmware or software appear as soon as development is complete and a market exists. Thus, the need to manage the devices arises upon the release of a new device, a hardware revision, or new firmware or software. In some past approaches, the network management system 40 is updated on a schedule different from the release schedule of managed devices. Each new release of the network management system 40 includes new functions that handle devices that came on the market or were installed in the network since the last release. However, this approach is widely viewed as undesirable, because until the next release of the network management system 40 appears, it cannot manage the new devices.
In an alternative approach, a new network device is defined in a device description file that can be read by the network management system 40 and incorporated in it at run-time. The device description file is delivered to the field independently of major releases of the network management system 40. Preferably, a developer creates and stores (xe2x80x9cdevelopsxe2x80x9d) one or more device descriptions (each called a xe2x80x9cDDxe2x80x9d) and groups them in a xe2x80x9cdevice package.xe2x80x9d The device package may be distributed to an end user who already has installed and is using a network management system. When the new device package is installed, the user may manage a new type of device.
In this approach, the device description identifies characteristics of hardware or software modules that are used in or executed by a particular device. However, sharing the device modules among different devices is virtually impossible. Further, each device family must implement all management definitions. Also, there are no functional abstractions that can be used to create a device description for a new device.
Further, in one past approach, the developer must specify a device description using one programming language that executes in the same system as the core functions (xe2x80x9cenginexe2x80x9d) of the network management system. Each device is specified using a Coded Device Description (xe2x80x9cCDDxe2x80x9d) in which each device description is coded using structures that are not specifically designed for the purpose of modeling devices. These limitations are inconvenient. A network management system is increasingly viewed as a development environment rather than merely an application program. A good network management system enables a user (xe2x80x9cdevice developer,xe2x80x9d or xe2x80x9cdeveloperxe2x80x9d) to create and store new device descriptions. The new device descriptions enable the network management system to support a new specific type of device. A successful network management system enables such device descriptions to be developed easily and rapidly.
Based on the foregoing, there is a clear need to provide improved management of devices between major releases of a network management application. There is also a need to provide automated management of new or different kinds of devices that become available after installation of a network management application.
In particular, there is a need to automatically integrate information about a new or different device with the network management application, without the requirement of releasing a revision of the entire network management application.
There is also a need to efficiently integrate information about a parent device with the network management application so that a child device, having a family relationship or hierarchical functional relationship to the parent device, is integrated into the network a management application using a minimum of new code and storage space and a minimum or re-coding on the part of the developer
There is also a need to create a set of abstractions whereby the operations on and data acquired from the devices of a network may be managed and understood in common rather in isolation.
There is a particular need for a system that can accomplish the foregoing in a way that is optimized and customized for the tasks of the device developer.
The foregoing needs, and other needs and objects that will become apparent in the following description, are fulfilled in the present invention, which comprises, in one aspect, a method of creating and storing information that represents a logical description of a network device for use in a network management system. A tree that represents a logical hierarchy of the components of the network device is created and stored, based on a textual description of physical components of the network device, wherein the description includes a logical expression. A first node of the tree that represents a logical slot of the network device that may be configured with one of a plurality of sub-components is created and stored. A result value is created and stored by evaluating the logical expression using a value that is obtained from the network device. One of the sub-components is selected, based on the result value. A second node is selected as a child node of the first node, wherein the second node represents the selected one of the plurality of sub-components.
In one feature, creating and storing a tree further involves creating and storing a tree that logically represents the components of the network device. The tree comprises a third node representing the device type and one or more component nodes that represent hardware or software elements of the network device, and creating and storing the first node as a child node of the third node.
According to another feature, the method further comprises creating and storing the textual description in the form of one or more stored device descriptions, each device description comprising a definition of a device type node and one or more component type nodes. Another feature involves creating and storing the textual description in the form of one or more stored device descriptions. Each device description comprises a definition of a device type node, one or more component type nodes, and one or more slot type nodes. Each of the slot type nodes includes a logical expression that can be used to select a sub-component node that is contained within that slot type node.
In yet another feature, creating and storing a result value includes creating and storing a result value by evaluating the logical expression using a value for a variable in the expression that is obtained from the network device. In still another feature, creating and storing a result value includes creating and storing a result value by evaluating the logical expression using a value for a variable in the expression that is obtained from the network device in real time at a time at which the tree is created and stored. A related feature is that creating and storing a result value may include creating and storing a result value, by evaluating the logical expression using a value for a variable in the expression that is obtained from the network device in real time at run time of the network management system.
Further, creating and storing a result value may include creating and storing a result value by evaluating the logical expression using a value for a variable in the expression that is obtained from the network device in real time upon initialization of the network management system. As another alternative, creating and storing a result value may include creating and storing a result value by evaluating the logical expression using a value for a variable in the expression that is obtained from the network device in real time using a dynamic device discovery operation of the network management system.
The invention also encompasses other methods, apparatus, and products, as set forth in the following disclosure and as recited in the appended claims.